package com.hctg.forced2sleep.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import androidx.annotation.Nullable;

import com.actor.myandroidframework.activity.ViewBindingActivity;
import com.actor.myandroidframework.utils.LogUtils;
import com.blankj.utilcode.util.FileIOUtils;
import com.hctg.forced2sleep.R;
import com.hctg.forced2sleep.databinding.ActivityHostManageBinding;

import java.io.File;
import java.util.List;

/**
 * description: 手机Host管理, 资料:
 * 开发文档: https://developer.android.google.cn/guide/topics/connectivity/vpn#java
 * 官方demo clone: https://github.com/iceleaf916/ToyVPN (要输入ip,端口,secret, 然后点击连接, 没看见钥匙形状图标)
 * 一个本地拦截软件: blockada.apk
 *
 * company    :
 *
 * @author : ldf
 * date       : 2022/2/24 on 16:23
 */
public class HostManageActivity extends ViewBindingActivity<ActivityHostManageBinding> {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("手机Host管理");

        //3.设备管理器

        //4.VPN

    }

    /**
     * 1.修改host文件首先需要Android手机获取Root权限
     * 2.将hosts文件拷贝到电脑，电脑端修改后复制回手机(仍需要root权限)
     */
    private void localHost() {
        File file = new File("/system/etc/hosts");
        List<String> lines = FileIOUtils.readFile2List(file);

        //printIp
        for (String line : lines) {
            //         127.0.0.1       localhost
            //         ::1             ip6-localhost
            LogUtils.error(line);
        }

        //addIp
        //起点
        lines.add("127.0.0.1       read.qidian.com");
        lines.add("127.0.0.1       www.qidian.com");
        //# 搜读
        lines.add("127.0.0.1       m.sodu2020.com");
        //# 头条
        lines.add("127.0.0.1       www.toutiao.com");
        lines.add("127.0.0.1       m.toutiao.com");
        //# 西瓜
        lines.add("127.0.0.1       www.ixigua.com");
        lines.add("127.0.0.1       m.ixigua.com");

        //lines -> str
        /**
         * @see com.blankj.utilcode.util.FileUtils#LINE_SEP
         */
        final String              LINE_SEP = System.getProperty("line.separator");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < lines.size(); i++) {
            sb.append(lines.get(i));
            //如果不是最后一个
            if (i < lines.size() - 1) {
                sb.append(LINE_SEP);
            }
        }
        String str = sb.toString();
        //写进hosts文件
        FileIOUtils.writeFileFromString(file, str);
    }


//    @Override
    public void onViewClicked(View view) {
        int id = view.getId();
//        if (id == R.id.btn_print_ip) {
//            /**
//             * 准备服务:
//             * https://developer.android.google.cn/guide/topics/connectivity/vpn#prepare_a_service
//             * 要使应用准备好成为用户当前的 VPN 服务，请调用 VpnService.prepare()。
//             * 如果设备的使用者尚未授予应用的权限，则该方法会返回 Activity Intent。您将使用此 Intent 来启动询问权限的系统 Activity。
//             * 系统会显示一个类似于其他权限对话框（例如摄像头或联系人访问权限）的对话框。
//             * 如果您的应用已经准备好，则该方法会返回 null。
//             */
//            @Nullable
//            Intent intent = OpenVPNService.prepare(this);
//            if (intent != null) {
////                    ContextCompat.startForegroundService(this, intent);
//                startActivityForResult(intent, 0);
//            } else {
//                onActivityResult(0, Activity.RESULT_OK, null);
//            }
////                printIp();
//        } else if (id == R.id.btn_add_ip) {
////                addIp();
//            //关闭vpn连接
//            Intent intentStop = new Intent(this, OpenVPNService.class);
//            intentStop.putExtra(OpenVPNService.EXTRA_COMMAND, OpenVPNService.STOP);
//            startService(intentStop);
//            //下面这种方式停止不了
////                stopService(intentStop);
//        } else if (id == R.id.btn_is_start) {
////                boolean isConnected = isVpnUsed();
////                String ip = IpUtil.getIPAddress(this);
////                ToasterUtils.errorFormat("vpn连接状态: %b, 连接ip: %s", isConnected, ip);
//        } else if (id == R.id.btn_input_vpn) {
//            startActivity(new Intent(this, ToyVpnClient.class));
//        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
//            Intent intentStart = new Intent(this, OpenVPNService.class);
//            intentStart.putExtra(OpenVPNService.EXTRA_COMMAND, OpenVPNService.START_SERVICE);
//            startService(intentStart);
        }
    }
}